package net.atomarrow.util;

import java.lang.reflect.Field;
import java.util.List;
import java.util.Objects;

/**
 * 列表工具
 * @author mmm
 *
 */
public class ListUtil {
	/**
	 * 是否包含
	 * @param list
	 * @param o
	 * @return
	 */
	public static boolean contains(List<Integer> list,int o){
		if(list==null){return false;}
		for(Integer a:list){
			if(a.intValue()==o){
				return true;
			}
		}
		return false;
	}
	
	/**
	 * 检测List中是否有某个字段是指定值的对象，有的话，直接返回该对象，否则返回null
	 * @param list
	 * @param fieldName
	 * @param value
	 * @return
	 */
	public static <E> E contains(List<E> list, String fieldName, Object value)  {
		if (fieldName == null) {
			return null;
		}
		Field field = null;
		try {
			for (E e : list) {
				if (field == null) {
					field = e.getClass().getDeclaredField(fieldName);
					field.setAccessible(true);
				}
				if (Objects.equals(value, field.get(e))) {
					return e;
				}
			}
		} catch (Exception e1) {
			e1.printStackTrace();
			return null;
		} 
		return null;
	}
 	
	/**
	 * 得到列表中某字段的数组集合
	 * @param list
	 * @param columnName
	 * @return
	 */
	public static <E> Integer[] getIntegerArray(List<E> list,String columnName){
		if(list.size()>0){
			Integer[] arrays=new Integer[list.size()];
			try{
				Class clazz=list.get(0).getClass();
				Field field=clazz.getDeclaredField(columnName);
				if(field==null){
					return null;
				}
				field.setAccessible(true);
				for(int i=0;i<list.size();i++){
					arrays[i]=(Integer) field.get(list.get(i));
				}
			}catch(Exception e){
				e.printStackTrace();
			}
			return arrays;
		}else{
			return null;
		}
	}
	/**
	 * 得到列表中某字段的数组集合
	 * @param list
	 * @param columnName
	 * @return
	 */
	public static <E> String[] getStringArray(List<E> list,String columnName){
		if(list.size()>0){
			String[] arrays=new String[list.size()];
			try{
				Class clazz=list.get(0).getClass();
				Field field=clazz.getDeclaredField(columnName);
				if(field==null){
					return null;
				}
				field.setAccessible(true);
				for(int i=0;i<list.size();i++){
					arrays[i]=(String) field.get(list.get(i));
					System.out.println(arrays[i]);
				}
			}catch(Exception e){
				e.printStackTrace();
			}
			return arrays;
		}else{
			return null;
		}
	}
}
